npm publish如何过滤掉部分文件
npm publish
的时候会把当前目录里面所有的文件都publish到npm仓库中, 但是往往有一部分目录和文件不想发布上去, 比如项目的源码、 .editorconfig
、 tslint.json
、 编译脚本等等信息, 发布出去对用户来说可能也没太大作用, 完全可以不发布这部分, 仅仅发布那些用户需要使用的相关文件, 那么该如何做呢?
- 使用
.gitignore
设置忽略哪些文件
如果项目使用了git 管理代码版本的话, 可能会使用 .gitignore
, 那么 .gitignore
里面设置的忽略文件在 npm publish
的时候也会被忽略.
- 使用
.npmignore
设置忽略哪些文件
如果项目没有使用 git或者 没有 .gitignore
文件, 那么可以添加 .npmignore
文件来设置忽略哪些文件, .npmignore
的写法跟 .gitignore
的规则完全一样。 需要注意的是如果同时使用了 .npmignore
和 .gitignore
的话, 只有 .npmignore
会生效, 优先级比较高。
- 使用
package.json
的files
字段选择发布哪些文件
上面两种方式都是设置忽略哪些文件, 有时可能只想发布编译打包后的几个文件或者目录, 如果按照上面的设置会很麻烦, 这是可以直接在 package.json 中 files
字段设置发布哪些文件或目录, 这样的话, 只有这些目录或文件才会被publish.
同时需要说明的是这里的优先级是高于 .npmignore
和 .gitignore
的。
- npm默认带了一些规则
除了上面的规则外, npm还有一些内置的规则,会被自动忽略的文件有1
2
3
4
5
6
7
8
9
10
11
12.*.swp
._*
.DS_Store
.git
.hg
.npmrc
.lock-wscript
.svn
.wafpickle-*
config.gypi
CVS
npm-debug.log
node_modules下的所有文件也会被忽略。
另外还有一部分文件会被包含, 即便设置忽略也无效, 这些文件有1
2
3
4package.json
README (and its variants)
CHANGELOG (and its variants)
LICENSE / LICENCE
本文作者 : Shuai Liang
原文链接 : http://liangshuai.me/2018/12/17/yuque/npm publish如何过滤掉部分文件/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
知识 & 情怀 | 二者兼得